export function isHttpUrl(link: string) {
  try {
    const url = new URL(link)
    return ['http:', 'https:'].includes(url.protocol)
  } catch (_) {
    return false
  }
}

export function isVueComponent(obj: any) {
  // 简单的检查是否含有 Vue 组件常用的选项
  // Vue 3组件通常是通过defineComponent创建的，所以我们可以检查其构造函数
  // 注意：这不是一个绝对可靠的方法，因为用户可能会创建类似的对象
  const isDefineComponentCreated =
    obj.__vue_isFragment !== undefined || // Fragment组件的标记
    obj.__vue_isTeleport !== undefined || // Teleport组件的标记
    obj.__vue_isSuspense !== undefined || // Suspense组件的标记
    (obj._isVue && obj.__v_isReactive) // 组件实例的标记（不完全准确，但可以作为参考）
  // 另一种方法是检查对象是否包含Vue组件可能有的属性或方法
  // 但这同样不是绝对可靠的，因为用户可以自定义这些属性或方法
  const hasVueComponentProperties =
    typeof obj.setup === 'function' || // Composition API的setup函数
    typeof obj.render === 'function' // 选项式API的render函数
  // 结合两种方法提高判断的准确性
  return isDefineComponentCreated || hasVueComponentProperties
}
